package com.demo.web;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

import java.util.Arrays;


@SpringBootApplication
@Slf4j
// ApplicationRunner 会让所有的 SpringBootApplication启动的时候都启动本程序
// public class SpringbootCliApplication implements ApplicationRunner {
public class SpringbootCliApplication{

    @Value("${spring.application.name}")
    public String name;

    /**
     * WebApplicationType.NONE：应用程序不应作为 Web 应用程序运行，也不应启动嵌入式 Web 服务器
     *
     * @param args
     */
    public static void main(String[] args) {

        // 1. 其中配置headless为false，这是针对需要使用awt的场景。springboot默认为非交互式的，禁止启动awt。
        // 2. 其中实现ApplicationRunner，可以在成功启动Spring上下文之后执行一些操作
        log.info("------main start----------");
        new SpringApplicationBuilder(SpringbootCliApplication.class)
                .web(WebApplicationType.NONE)
                .headless(false)
                .run(args);
        log.info("------main end----------");
    }

    // @Override
    public void run(ApplicationArguments args) {

        System.out.println(args);

        // 启动frame
        // do something
        log.info("running {}", name);

        // args length
        log.info("args length {}", args.getNonOptionArgs().size());


        // 任务完成，退出系统
        System.exit(0);
    }
}
